
import { defineConfig } from 'vite' // 导入 Vite 的配置函数
import vue from '@vitejs/plugin-vue' // 导入 Vue 插件
import path from 'path' // 导入 Node.js 的 path 模块
import Components from 'unplugin-vue-components/vite' // 导入 Vue 组件自动注册插件
import { visualizer } from 'rollup-plugin-visualizer' // 导入 Rollup 打包分析插件
import { execSync } from 'child_process' // 导入 Node.js 的 child_process 模块

export default defineConfig({
  base: '/pdf-h5', // 设置应用的基础路径
  server: {
    proxy: {
      '/api/pdf': {
        target: 'http://localhost:9000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api\/pdf/, '/api/pdf')
      }
    }
  },
  plugins: [
    vue(), // 使用 Vue 插件
    Components({
      resolvers: [], // 】
    }),
    visualizer({ open: true }), // 使用打包分析工具并在打包后自动打开分析报告
  ],
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'), // 设置路径别名，@ 指向 src 目录
    },
  },

  build: {
    outDir: 'pdf-h5', // 修改打包输出目录为 excel-h5
    rollupOptions: {
      output: {
        manualChunks: {
          vendor: ['vue', 'axios'], // 手动分割 vendor 包，包含 vue, axios
        },
      },
    },
    chunkSizeWarningLimit: 500, // 设置警告阈值，单位 KB
    brotliSize: false, // 关闭 Brotli 压缩大小报告
  },
  optimizeDeps: {
    include: ['vue', 'axios'], // 预构建依赖，提高构建速度
  },
  // 添加打包完成后清除 log 文件的钩子
  buildEnd: () => {
    try {
      execSync('rimraf logs'); // 使用 rimraf 清除 logs 目录
      // console.log('日志文件已清除');
    } catch (error) {
      // console.error('清除日志文件失败:', error);
    }
  },
})
